Many search engine services, such as Google and Overture, provide for searching for information that is accessible via the Internet. These search engine services allow users to search for display pages, such as web pages, that may be of interest to users. After a user submits a search request (i.e., a query) that includes search terms, the search engine service identifies web pages that may be related to those search terms. To quickly identify related web pages, the search engine services may maintain a mapping of keywords to web pages. This mapping may be generated by “crawling” the web (i.e., the World Wide Web) to identify the keywords of each web page. To crawl the web, a search engine service may use a list of root web pages to identify all web pages that are accessible through those root web pages. The keywords of any particular web page can be identified using various well-known information retrieval techniques, such as identifying the words of a headline, the words supplied in the metadata of the web page, the words that are highlighted, and so on. The search engine service identifies web pages that may be related to the search request based on how well the keywords of a web page match the words of the query. The search engine service then displays to the user links to the identified web pages in an order that is based on a ranking that may be determined by their relevance to the query, popularity, importance, and/or some other measure.
Some search engine services attempt to tailor the search result based on the location of the user or other location information provided by the user. These search engine services are referred to as “location-based” search engine services. A location-based search engine service may allow a user to specify a query location along with query terms. A location-based search engine service could treat the query location just like another query term and use a traditional search engine service to search for related web pages. Alternatively, a location-based search engine service may first perform a traditional search using the query terms and then rank the search results based on the query location. For example, a user looking for a restaurant may enter the query location of “Redmond” and the query terms of “Chinese restaurant.” The search engine service would search for Chinese restaurants and then rank web pages, if any, that include the word Redmond higher than those that do not. Such location-based search engines, however, cannot support advanced spatial queries. An advanced spatial query may specify distance such as “within 5 kilometers of my current location,” may specify relation to governmental organizations such as “within King County” and “encompasses King County,” and so on.
Many location-based web applications, including location-based search engine services, have been developed to support mobile devices and local searching needs. Such location-based web applications include navigation systems, local advertisement systems, geographic retrieval systems, and so on. These web applications need to detect the locations of a web resource and match it with the user's current location. For example, a cellular phone user may want to find a local car dealership. A web application could match the user's current location as indicated by the cellular phone with the location of car dealers to identify which car dealerships may be appropriate to suggest to the user. To provide accurate results, these web applications need to identify the locations associated with a web page and the meaning of the location. Location may be categorized as a provider location, a content location, and a serving location. A provider location identifies the geographic location of the entity that provides the web resource. A content location identifies the geographic location that is the subject of the web resource. A serving location identifies the geographic scope that the web page reaches.
These web applications need to perform accurate location-based searching in real time to support their functions. For example, an appropriate location-based advertisement needs to be identified and presented to a user at the same time the search result is presented to the user. Current techniques for locating web resources, however, are either too slow to operate in real time or so inaccurate that their results are not particularly satisfactory.